package com.yun.dz.dao;

import com.yun.dz.bean.UserBean;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

import java.sql.*;
import java.util.List;
import java.util.Map;
import java.util.Set;


public class DBTestDriver {
    public static void main(String[] args) {
        doQuryByDBUtilsBean();
    }

    //更新操作
    public static void insertNewData() {
        // 新增执行的sql语句
        String strSql = "INSERT INTO jsp_user(username,userpsw) VALUES( ? , ? )";
        // 创建参数数组
        Object[] objParams = {"user03", "123456"};
        // 执行新增操作语句
        // int i = DBProvider.update(strSql, objParams);
        int i = DBProvider.update(strSql, "user04", "123456");
        // 判断操作结果
        if (i == 1) {
            System.out.println("新增数据成功！");
        } else {
            System.out.println("新增数据失败！");
        }
    }

    //查询操作
    public static void doQuryByDBUtilsBean() {
        System.out.println("========================双重锁模式————DBCP连接数据库操作=======================");

        // （4）执行SQL语句，获取数据操作结果或者结果集对象ResultSet；
        String strSql = "SELECT * FROM jsp_user"; // sql语句先进行调试，在写入java程序
        // 获取查询结果
        // 转储为 list+map

        List<UserBean> list = DBProvider.query(strSql, new BeanListHandler<>(UserBean.class));

        // 转储为 list+map
        List<Map<String, Object>> listMap = DBProvider.query(strSql, new MapListHandler());

        // 转储为 list+Array
        List<Object[]> lsitArray = DBProvider.query(strSql, new ArrayListHandler());

        // 业务逻辑处理：进行结果集的遍历
        for (UserBean eachBean : list) {
            // 从list中的bean对象中获取数据库查询结果集中的各列的值
            //System.out.print(eachBean.getUserId()+"   "+eachBean.getUserName()+"    "+eachBean.getUserPsw());
            System.out.print("   " + eachBean.getUserName());
            // 换行
            System.out.println();
        }


    }

}
